#pragma once

#include <GLFW/glfw3.h>
#include <utl/input.h>

constexpr input::input_code glfw_input_map[]
{
    /*0*/ input::max,
    /*1*/ input::max,
    /*2*/ input::max,
    /*3*/ input::max,
    /*4*/ input::max,
    /*5*/ input::max,
    /*6*/ input::max,
    /*7*/ input::max,
    /*8*/ input::max,
    /*9*/ input::max,

    /*10*/ input::max, 
    /*11*/ input::max,
    /*12*/ input::max,
    /*13*/ input::max,
    /*14*/ input::max,
    /*15*/ input::max,
    /*16*/ input::max,
    /*17*/ input::max,
    /*18*/ input::max,
    /*19*/ input::max,

    /*20*/input::max,
    /*21*/input::max,
    /*22*/input::max,
    /*23*/input::max,
    /*24*/input::max,
    /*25*/input::max,
    /*26*/input::max,
    /*27*/input::max,
    /*28*/input::max,
    /*29*/input::max,

    /*30*/input::max,
    /*31*/input::max,
    /*32*/input::vk_space,
    /*33*/input::max,
    /*34*/input::max,
    /*35*/input::max,
    /*36*/input::max,
    /*37*/input::max,
    /*38*/input::max,
    /*39*/input::max,

    /*40*/input::max,
    /*41*/input::max,
    /*42*/input::max,
    /*43*/input::max,
    /*44*/input::max,
    /*45*/input::max,
    /*46*/input::max,
    /*47*/input::max,
    /*48*/input::vk_0,
    /*49*/input::vk_1,

    /*50*/input::vk_2,
    /*51*/input::vk_3,
    /*52*/input::vk_4,
    /*53*/input::vk_5,
    /*54*/input::vk_6,
    /*55*/input::vk_7,
    /*56*/input::vk_8,
    /*57*/input::vk_9,
    /*58*/input::max,
    /*59*/input::max,

    /*60*/input::max,
    /*61*/input::max,
    /*62*/input::max,
    /*63*/input::max,
    /*64*/input::max,

    /*65*/input::vk_a,
    /*66*/input::vk_b,
    /*67*/input::vk_c,
    /*68*/input::vk_d,
    /*69*/input::vk_e,
    /*70*/input::vk_f,
    /*71*/input::vk_g,
    /*72*/input::vk_h,
    /*73*/input::vk_i,
    /*74*/input::vk_j,
    /*75*/input::vk_k,
    /*76*/input::vk_l,
    /*77*/input::vk_m,
    /*78*/input::vk_n,
    /*79*/input::vk_o,
    /*80*/input::vk_p,
    /*81*/input::vk_q,
    /*82*/input::vk_r,
    /*83*/input::vk_s,
    /*84*/input::vk_t,
    /*85*/input::vk_u,
    /*86*/input::vk_v,
    /*87*/input::vk_w,
    /*88*/input::vk_x,
    /*89*/input::vk_y,
    /*90*/input::vk_z,

    /*91*/input::max,
    /*92*/input::max,
    /*93*/input::max,
    /*94*/input::max,
    /*95*/input::max,
    /*96*/input::max,
    /*97*/input::max,
    /*98*/input::max,
    /*99*/input::max,

    /*100*/input::max,
    /*101*/input::max,
    /*102*/input::max,
    /*103*/input::max,
    /*104*/input::max,
    /*105*/input::max,
    /*106*/input::max,
    /*107*/input::max,
    /*108*/input::max,
    /*109*/input::max,

    /*110*/input::max,
    /*111*/input::max,
    /*112*/input::max,
    /*113*/input::max,
    /*114*/input::max,
    /*115*/input::max,
    /*116*/input::max,
    /*117*/input::max,
    /*118*/input::max,
    /*119*/input::max,

    /*120*/input::max,
    /*121*/input::max,
    /*122*/input::max,
    /*123*/input::max,
    /*124*/input::max,
    /*125*/input::max,
    /*126*/input::max,
    /*127*/input::max,
    /*128*/input::max,
    /*129*/input::max,

    /*130*/input::max,
    /*131*/input::max,
    /*132*/input::max,
    /*133*/input::max,
    /*134*/input::max,
    /*135*/input::max,
    /*136*/input::max,
    /*137*/input::max,
    /*138*/input::max,
    /*139*/input::max,

    /*140*/input::max,
    /*141*/input::max,
    /*142*/input::max,
    /*143*/input::max,
    /*144*/input::max,
    /*145*/input::max,
    /*146*/input::max,
    /*147*/input::max,
    /*148*/input::max,
    /*149*/input::max,

    /*150*/input::max,
    /*151*/input::max,
    /*152*/input::max,
    /*153*/input::max,
    /*154*/input::max,
    /*155*/input::max,
    /*156*/input::max,
    /*157*/input::max,
    /*158*/input::max,
    /*159*/input::max,

    /*160*/input::max,
    /*161*/input::max,
    /*162*/input::max,
    /*163*/input::max,
    /*164*/input::max,
    /*165*/input::max,
    /*166*/input::max,
    /*167*/input::max,
    /*168*/input::max,
    /*169*/input::max,

    /*170*/input::max,
    /*171*/input::max,
    /*172*/input::max,
    /*173*/input::max,
    /*174*/input::max,
    /*175*/input::max,
    /*176*/input::max,
    /*177*/input::max,
    /*178*/input::max,
    /*179*/input::max,

    /*180*/input::max,
    /*181*/input::max,
    /*182*/input::max,
    /*183*/input::max,
    /*184*/input::max,
    /*185*/input::max,
    /*186*/input::max,
    /*187*/input::max,
    /*188*/input::max,
    /*189*/input::max,

    /*190*/input::max,
    /*191*/input::max,
    /*192*/input::max,
    /*193*/input::max,
    /*194*/input::max,
    /*195*/input::max,
    /*196*/input::max,
    /*197*/input::max,
    /*198*/input::max,
    /*199*/input::max,

    /*200*/input::max,
    /*201*/input::max,
    /*202*/input::max,
    /*203*/input::max,
    /*204*/input::max,
    /*205*/input::max,
    /*206*/input::max,
    /*207*/input::max,
    /*208*/input::max,
    /*209*/input::max,

    /*210*/input::max,
    /*211*/input::max,
    /*212*/input::max,
    /*213*/input::max,
    /*214*/input::max,
    /*215*/input::max,
    /*216*/input::max,
    /*217*/input::max,
    /*218*/input::max,
    /*219*/input::max,

    /*220*/input::max,
    /*221*/input::max,
    /*222*/input::max,
    /*223*/input::max,
    /*224*/input::max,
    /*225*/input::max,
    /*226*/input::max,
    /*227*/input::max,
    /*228*/input::max,
    /*229*/input::max,

    /*230*/input::max,
    /*231*/input::max,
    /*232*/input::max,
    /*233*/input::max,
    /*234*/input::max,
    /*235*/input::max,
    /*236*/input::max,
    /*237*/input::max,
    /*238*/input::max,
    /*239*/input::max,

    /*240*/input::max,
    /*241*/input::max,
    /*242*/input::max,
    /*243*/input::max,
    /*244*/input::max,
    /*245*/input::max,
    /*246*/input::max,
    /*247*/input::max,
    /*248*/input::max,
    /*249*/input::max,

    /*250*/input::max,
    /*251*/input::max,
    /*252*/input::max,
    /*253*/input::max,
    /*254*/input::max,
    /*255*/input::max,
    /*256*/input::vk_escape,
    /*257*/input::vk_return,
    /*258*/input::vk_tab,
    /*259*/input::vk_backspace,

    /*260*/input::vk_insert,
    /*261*/input::vk_delete,
    /*262*/input::vk_right,
    /*263*/input::vk_left,
    /*264*/input::vk_down,
    /*265*/input::vk_up,
    /*266*/input::vk_page_up,
    /*267*/input::vk_page_down,
    /*268*/input::vk_home,
    /*269*/input::vk_end,

    /*270*/input::max,
    /*271*/input::max,
    /*272*/input::max,
    /*273*/input::max,
    /*274*/input::max,
    /*275*/input::max,
    /*276*/input::max,
    /*277*/input::max,
    /*278*/input::max,
    /*279*/input::max,

    /*280*/input::max,
    /*281*/input::max,
    /*282*/input::max,
    /*283*/input::max,
    /*284*/input::max,
    /*285*/input::max,
    /*286*/input::max,
    /*287*/input::max,
    /*288*/input::max,
    /*289*/input::max,

    /*290*/input::max,
    /*291*/input::max,
    /*292*/input::max,
    /*293*/input::max,
    /*294*/input::max,
    /*295*/input::max,
    /*296*/input::max,
    /*297*/input::max,
    /*298*/input::max,
    /*299*/input::max,

    /*300*/input::max,
    /*301*/input::max,
    /*302*/input::max,
    /*303*/input::max,
    /*304*/input::max,
    /*305*/input::max,
    /*306*/input::max,
    /*307*/input::max,
    /*308*/input::max,
    /*309*/input::max,

    /*310*/input::max,
    /*311*/input::max,
    /*312*/input::max,
    /*313*/input::max,
    /*314*/input::max,
    /*315*/input::max,
    /*316*/input::max,
    /*317*/input::max,
    /*318*/input::max,
    /*319*/input::max,

    /*320*/input::max,
    /*321*/input::max,
    /*322*/input::max,
    /*323*/input::max,
    /*324*/input::max,
    /*325*/input::max,
    /*326*/input::max,
    /*327*/input::max,
    /*328*/input::max,
    /*329*/input::max,

    /*330*/input::max,
    /*331*/input::max,
    /*332*/input::max,
    /*333*/input::max,
    /*334*/input::max,
    /*335*/input::max,
    /*336*/input::max,
    /*337*/input::max,
    /*338*/input::max,
    /*339*/input::max,

    /*340*/input::vk_left_shift,
    /*341*/input::vk_left_ctrl,
    /*342*/input::vk_left_alt,
    /*343*/input::max,
    /*344*/input::max,
    /*345*/input::max,
    /*346*/input::max,
    /*347*/input::max,
    /*348*/input::max,
    /*349*/input::max,

    /*350*/input::max,
    /*351*/input::max,
    /*352*/input::max,
    /*353*/input::max,
    /*354*/input::max,
    /*355*/input::max,
    /*356*/input::max,
    /*357*/input::max,
    /*358*/input::max,
    /*359*/input::max,

    /*360*/input::max,
    /*361*/input::max,
    /*362*/input::max,
    /*363*/input::max,
    /*364*/input::max,
    /*365*/input::max,
    /*366*/input::max,
    /*367*/input::max,
    /*368*/input::max,
    /*369*/input::max,

    /*370*/input::max,
    /*371*/input::max,
    /*372*/input::max,
    /*373*/input::max,
    /*374*/input::max,
    /*375*/input::max,
    /*376*/input::max,
    /*377*/input::max,
    /*378*/input::max,
    /*379*/input::max,

    /*380*/input::max,
    /*381*/input::max,
    /*382*/input::max,
    /*383*/input::max,
    /*384*/input::max,
    /*385*/input::max,
    /*386*/input::max,
    /*387*/input::max,
    /*388*/input::max,
    /*389*/input::max,

    /*390*/input::max,
    /*391*/input::max,
    /*392*/input::max,
    /*393*/input::max,
    /*394*/input::max,
    /*395*/input::max,
    /*396*/input::max,
    /*397*/input::max,
    /*398*/input::max,
    /*399*/input::max,

    /*400*/input::max,
    /*401*/input::max,
    /*402*/input::max,
    /*403*/input::max,
    /*404*/input::max,
    /*405*/input::max,
    /*406*/input::max,
    /*407*/input::max,
    /*408*/input::max,
    /*409*/input::max,

    /*410*/input::max,
    /*411*/input::max,
    /*412*/input::max,
    /*413*/input::max,
    /*414*/input::max,
    /*415*/input::max,
    /*416*/input::max,
    /*417*/input::max,
    /*418*/input::max,
    /*419*/input::max,

    /*420*/input::max,
    /*421*/input::max,
    /*422*/input::max,
    /*423*/input::max,
    /*424*/input::max,
    /*425*/input::max,
    /*426*/input::max,
    /*427*/input::max,
    /*428*/input::max,
    /*429*/input::max,

    /*430*/input::max,
    /*431*/input::max,
    /*432*/input::max,
    /*433*/input::max,
    /*434*/input::max,
    /*435*/input::max,
    /*436*/input::max,
    /*437*/input::max,
    /*438*/input::max,
    /*439*/input::max,

    /*440*/input::max,
    /*441*/input::max,
    /*442*/input::max,
    /*443*/input::max,
    /*444*/input::max,
    /*445*/input::max,
    /*446*/input::max,
    /*447*/input::max,
    /*448*/input::max,
    /*449*/input::max,

    /*450*/input::max,
    /*451*/input::max,
    /*452*/input::max,
    /*453*/input::max,
    /*454*/input::max,
    /*455*/input::max,
    /*456*/input::max,
    /*457*/input::max,
    /*458*/input::max,
    /*459*/input::max,

    /*460*/input::max,
    /*461*/input::max,
    /*462*/input::max,
    /*463*/input::max,
    /*464*/input::max,
    /*465*/input::max,
    /*466*/input::max,
    /*467*/input::max,
    /*468*/input::max,
    /*469*/input::max,

    /*470*/input::max,
    /*471*/input::max,
    /*472*/input::max,
    /*473*/input::max,
    /*474*/input::max,
    /*475*/input::max,
    /*476*/input::max,
    /*477*/input::max,
    /*478*/input::max,
    /*479*/input::max,

    /*480*/input::max,
    /*481*/input::max,
    /*482*/input::max,
    /*483*/input::max,
    /*484*/input::max,
    /*485*/input::max,
    /*486*/input::max,
    /*487*/input::max,
    /*488*/input::max,
    /*489*/input::max,

    /*490*/input::max,
    /*491*/input::max,
    /*492*/input::max,
    /*493*/input::max,
    /*494*/input::max,
    /*495*/input::max,
    /*496*/input::max,
    /*497*/input::max,
    /*498*/input::max,
    /*499*/input::max,

    /*500*/input::max,
    /*501*/input::max,
    /*502*/input::max,
    /*503*/input::max,
    /*504*/input::max,
    /*505*/input::max,
    /*506*/input::max,
    /*507*/input::max,
    /*508*/input::max,
    /*509*/input::max,

    /*510*/input::max,
    /*511*/input::max,
    /*512*/
    /*513*/
    /*514*/
    /*515*/
    /*516*/
    /*517*/
    /*518*/
    /*519*/
};




    /*0*/
    /*1*/
    /*2*/
    /*3*/
    /*4*/
    /*5*/
    /*6*/
    /*7*/
    /*8*/
    /*9*/

    /*10*/
    /*11*/
    /*12*/
    /*13*/
    /*14*/
    /*15*/
    /*16*/
    /*17*/
    /*18*/
    /*19*/

    /*20*/
    /*21*/
    /*22*/
    /*23*/
    /*24*/
    /*25*/
    /*26*/
    /*27*/
    /*28*/
    /*29*/

    /*30*/
    /*31*/
    /*32*/
    /*33*/
    /*34*/
    /*35*/
    /*36*/
    /*37*/
    /*38*/
    /*39*/

    /*40*/
    /*41*/
    /*42*/
    /*43*/
    /*44*/
    /*45*/
    /*46*/
    /*47*/
    /*48*/
    /*49*/

    /*50*/
    /*51*/
    /*52*/
    /*53*/
    /*54*/
    /*55*/
    /*56*/
    /*57*/
    /*58*/
    /*59*/

    /*60*/
    /*61*/
    /*62*/
    /*63*/
    /*64*/
    /*65*/
    /*66*/
    /*67*/
    /*68*/
    /*69*/

    /*70*/
    /*71*/
    /*72*/
    /*73*/
    /*74*/
    /*75*/
    /*76*/
    /*77*/
    /*78*/
    /*79*/

    /*80*/
    /*81*/
    /*82*/
    /*83*/
    /*84*/
    /*85*/
    /*86*/
    /*87*/
    /*88*/
    /*89*/

    /*90*/
    /*91*/
    /*92*/
    /*93*/
    /*94*/
    /*95*/
    /*96*/
    /*97*/
    /*98*/
    /*99*/

    /*100*/
    /*101*/
    /*102*/
    /*103*/
    /*104*/
    /*105*/
    /*106*/
    /*107*/
    /*108*/
    /*109*/

    /*110*/
    /*111*/
    /*112*/
    /*113*/
    /*114*/
    /*115*/
    /*116*/
    /*117*/
    /*118*/
    /*119*/

    /*120*/
    /*121*/
    /*122*/
    /*123*/
    /*124*/
    /*125*/
    /*126*/
    /*127*/
    /*128*/
    /*129*/

    /*130*/
    /*131*/
    /*132*/
    /*133*/
    /*134*/
    /*135*/
    /*136*/
    /*137*/
    /*138*/
    /*139*/

    /*140*/
    /*141*/
    /*142*/
    /*143*/
    /*144*/
    /*145*/
    /*146*/
    /*147*/
    /*148*/
    /*149*/

    /*150*/
    /*151*/
    /*152*/
    /*153*/
    /*154*/
    /*155*/
    /*156*/
    /*157*/
    /*158*/
    /*159*/

    /*160*/
    /*161*/
    /*162*/
    /*163*/
    /*164*/
    /*165*/
    /*166*/
    /*167*/
    /*168*/
    /*169*/

    /*170*/
    /*171*/
    /*172*/
    /*173*/
    /*174*/
    /*175*/
    /*176*/
    /*177*/
    /*178*/
    /*179*/

    /*180*/
    /*181*/
    /*182*/
    /*183*/
    /*184*/
    /*185*/
    /*186*/
    /*187*/
    /*188*/
    /*189*/

    /*190*/
    /*191*/
    /*192*/
    /*193*/
    /*194*/
    /*195*/
    /*196*/
    /*197*/
    /*198*/
    /*199*/

    /*200*/
    /*201*/
    /*202*/
    /*203*/
    /*204*/
    /*205*/
    /*206*/
    /*207*/
    /*208*/
    /*209*/

    /*210*/
    /*211*/
    /*212*/
    /*213*/
    /*214*/
    /*215*/
    /*216*/
    /*217*/
    /*218*/
    /*219*/

    /*220*/
    /*221*/
    /*222*/
    /*223*/
    /*224*/
    /*225*/
    /*226*/
    /*227*/
    /*228*/
    /*229*/

    /*230*/
    /*231*/
    /*232*/
    /*233*/
    /*234*/
    /*235*/
    /*236*/
    /*237*/
    /*238*/
    /*239*/

    /*240*/
    /*241*/
    /*242*/
    /*243*/
    /*244*/
    /*245*/
    /*246*/
    /*247*/
    /*248*/
    /*249*/

    /*250*/
    /*251*/
    /*252*/
    /*253*/
    /*254*/
    /*255*/
    /*256*/
    /*257*/
    /*258*/
    /*259*/

    /*260*/
    /*261*/
    /*262*/
    /*263*/
    /*264*/
    /*265*/
    /*266*/
    /*267*/
    /*268*/
    /*269*/

    /*270*/
    /*271*/
    /*272*/
    /*273*/
    /*274*/
    /*275*/
    /*276*/
    /*277*/
    /*278*/
    /*279*/

    /*280*/
    /*281*/
    /*282*/
    /*283*/
    /*284*/
    /*285*/
    /*286*/
    /*287*/
    /*288*/
    /*289*/

    /*290*/
    /*291*/
    /*292*/
    /*293*/
    /*294*/
    /*295*/
    /*296*/
    /*297*/
    /*298*/
    /*299*/

    /*300*/
    /*301*/
    /*302*/
    /*303*/
    /*304*/
    /*305*/
    /*306*/
    /*307*/
    /*308*/
    /*309*/

    /*310*/
    /*311*/
    /*312*/
    /*313*/
    /*314*/
    /*315*/
    /*316*/
    /*317*/
    /*318*/
    /*319*/

    /*320*/
    /*321*/
    /*322*/
    /*323*/
    /*324*/
    /*325*/
    /*326*/
    /*327*/
    /*328*/
    /*329*/

    /*330*/
    /*331*/
    /*332*/
    /*333*/
    /*334*/
    /*335*/
    /*336*/
    /*337*/
    /*338*/
    /*339*/

    /*340*/
    /*341*/
    /*342*/
    /*343*/
    /*344*/
    /*345*/
    /*346*/
    /*347*/
    /*348*/
    /*349*/

    /*350*/
    /*351*/
    /*352*/
    /*353*/
    /*354*/
    /*355*/
    /*356*/
    /*357*/
    /*358*/
    /*359*/

    /*360*/
    /*361*/
    /*362*/
    /*363*/
    /*364*/
    /*365*/
    /*366*/
    /*367*/
    /*368*/
    /*369*/

    /*370*/
    /*371*/
    /*372*/
    /*373*/
    /*374*/
    /*375*/
    /*376*/
    /*377*/
    /*378*/
    /*379*/

    /*380*/
    /*381*/
    /*382*/
    /*383*/
    /*384*/
    /*385*/
    /*386*/
    /*387*/
    /*388*/
    /*389*/

    /*390*/
    /*391*/
    /*392*/
    /*393*/
    /*394*/
    /*395*/
    /*396*/
    /*397*/
    /*398*/
    /*399*/

    /*400*/
    /*401*/
    /*402*/
    /*403*/
    /*404*/
    /*405*/
    /*406*/
    /*407*/
    /*408*/
    /*409*/

    /*410*/
    /*411*/
    /*412*/
    /*413*/
    /*414*/
    /*415*/
    /*416*/
    /*417*/
    /*418*/
    /*419*/

    /*420*/
    /*421*/
    /*422*/
    /*423*/
    /*424*/
    /*425*/
    /*426*/
    /*427*/
    /*428*/
    /*429*/

    /*430*/
    /*431*/
    /*432*/
    /*433*/
    /*434*/
    /*435*/
    /*436*/
    /*437*/
    /*438*/
    /*439*/

    /*440*/
    /*441*/
    /*442*/
    /*443*/
    /*444*/
    /*445*/
    /*446*/
    /*447*/
    /*448*/
    /*449*/

    /*450*/
    /*451*/
    /*452*/
    /*453*/
    /*454*/
    /*455*/
    /*456*/
    /*457*/
    /*458*/
    /*459*/

    /*460*/
    /*461*/
    /*462*/
    /*463*/
    /*464*/
    /*465*/
    /*466*/
    /*467*/
    /*468*/
    /*469*/

    /*470*/
    /*471*/
    /*472*/
    /*473*/
    /*474*/
    /*475*/
    /*476*/
    /*477*/
    /*478*/
    /*479*/

    /*480*/
    /*481*/
    /*482*/
    /*483*/
    /*484*/
    /*485*/
    /*486*/
    /*487*/
    /*488*/
    /*489*/

    /*490*/
    /*491*/
    /*492*/
    /*493*/
    /*494*/
    /*495*/
    /*496*/
    /*497*/
    /*498*/
    /*499*/